<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>构造函数 通过new关键字调用 函数的首字母大写</p>
    <script>
        function CreateCar(color, paiLiang, howLong, num) {
            // 单纯考虑构造函数中的this没有意义 构造函数运行时才有this 这个函数正常的调用方式是带上new
            // new了之后就有实例 此时this就指向这个实例
            // ========================
            // 车身颜色  排量 续航 排气管数量
            // 构造函数中的this 指向的不是这个函数 而是由这个构造函数生成的实例对象
            this.color = color;
            this.paiLiang = paiLiang;
            this.howLong = howLong;
            this.num = num;
            this.drive = function() {
                console.log(1);
                console.log(bigBen);
            }
            this.deSpeed = function() {
                console.log('我还没上车！');
            }
        }

        // var arr1 = new Array()  arr1 是一个Array（的一个实例） 所以 car1就是一个 CreateCar（的实例）
        var car1 = new CreateCar('red', 0.8, '400km', 1)
        var car2 = new CreateCar('black', 2.8, '4000km', 10)
        // car1 instanceof CreateCar 返回true 表明了car1和CreateCar的内部联系
        // car1.constructor 打印出来是CreateCar这个函数
        // 说明car1是CreateCar的实例   CreateCar是car1的构造函数 由CreateCar生成了car1
        // constructor 指向实例的构造函数 饭的构造函数是餐馆  餐馆的实例是饭
        // 饭 instanceof 餐馆  返回true     饭.constructor 得到餐馆
        // 做第一份饭时的this是第一份饭  做第二份饭时的this是第二份饭   this不是指向餐馆而是指向某份饭
    </script>
</body>
</html>